//如何开启服务器，以及如何获取用户请求数据，并响应数据
// 1.引入express包，和拥有获取post请求数据api的第三方包body-parser
var express = require('express')
var bodyParser = require('body-parser')
//引入读文件模块 
var fs = require('fs')
const { json } = require('body-parser')
// 2.创建你的服务器,也就是原来的http.createServer

var app = express()//这一步相当于原来的http.createServer创建一个服务器对象

// 配置使用express-art-template模板引擎,第一个参数表示当渲染以.html结尾的文件的时候使用express-art-template模板加载
app.engine('art', require('express-art-template'))
//虽然不需要配置art-template模板但是还是要安装，因为expres-art-template依赖了art-template
//express默认为response响应对象提供了render方法，但是只有配置了express-art-templat模板引擎之后才能使用

// 配置body-parser包
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())


//解决跨域需要安装cors包
const cors = require('cors');
app.use(cors({

  origin: ['http://localhost:8080'],
  credentials: true
}))


// 添加注册管理员接口
app.get('/addmanager', function (req, res) {
  // res.send('hello express')
  const addmanager = require('./addmanager').addmanager
  let manager = {
    managername: '',
    account: '',
    password: '',
    contents: ''
  }
  manager.managername = req.query.managername
  manager.account = req.query.account
  manager.password = req.query.password
  manager.contents = req.query.contents
  console.log(manager)
  addmanager(manager, (info) => {
    res.send(info)
  })
})

// 登录接口判断管理员用户以及密码是否存在
app.get('/login', function (req, res) {
  const search = require('./addmanager').search
  search({
    account: req.query.account,
    password: req.query.password,
  }, (manager, token) => {
    let data = {
      managerinfo: [],
      token: ''
    }
    if (token === '404') {
      data.managerinfo = manager
      data.token = token
      res.send(data)
    }
    else {
      data.managerinfo = manager
      data.token = token
      res.send(data)
    }
  })
})

// 删除管理员账号接口
app.post('/removemanager', function (req, res) {
  const remove = require('./addmanager').delete
  remove(req.body.account, (data) => {
    res.send(data)
  })
})


//添加用户接口，这一步当浏览器通过get请求访问地址为/adduser的时候服务器执行这个回调函数
app.get('/adduser', function (req, res) {
  // res.send('hello express')
  const adduser = require('./adduser').adduser

  adduser({
    name: req.query.username,
    age: req.query.age,
    telnumber: req.query.telnumber,
    userid: req.query.userid,
    contents: req.query.contents
  }, (info) => {
    res.send(info)
  })
})

//查询所有用户接口，当用户通过post请求/searchalluser地址时执行这个回调函数
app.post('/searchalluser', function (req, res) {
  const searchuserall = require('./adduser').searchall
  searchuserall(req.body.page, req.body.limit, (user, datainfo) => {
    let data = {
      user,
      datainfo
    }
    res.send(data)
  })
})


//查询用户接口(查询与搜索条件匹配的数据)，当用户通过post请求/searchuser地址时执行这个回调函数
app.post('/searchuser', function (req, res) {
  const search = require('./adduser').search
  //需要判断用户是用什么方式进行搜索，例如使用用户名来搜索用户信息
  if (req.body.id) {
    let type = 'id';
    search(type, req.body.id, req.body.page, req.body.limit, (user, datainfo) => {

      let data = {
        user,
        datainfo
      }

      res.send(data)
    })
  }
  if (req.body.username) {
    let type = 'username';
    search(type, req.body.username, req.body.page, req.body.limit, (user, datainfo) => {

      let data = {
        user,
        datainfo
      }

      res.send(data)
    })
  }
  if (req.body.age) {
    let type = 'age';
    search(type, req.body.age, req.body.page, req.body.limit, (user, datainfo) => {

      let data = {
        user,
        datainfo
      }

      res.send(data)
    })
  }
  if (req.body.telnumber) {
    let type = 'telnumber';
    search(type, req.body.telnumber, req.body.page, req.body.limit, (user, datainfo) => {

      let data = {
        user,
        datainfo
      }

      res.send(data)
    })
  }
  if (req.body.userid) {
    let type = 'userid';
    search(type, req.body.userid, req.body.page, req.body.limit, (user, datainfo) => {

      let data = {
        user,
        datainfo
      }

      res.send(data)
    })
  }
  if (req.body.contents) {
    let type = 'contents';
    search(type, req.body.contents, req.body.page, req.body.limit, (user, datainfo) => {

      let data = {
        user,
        datainfo
      }

      res.send(data)
    })
  }


})

//删除用户接口，这一步当浏览器通过get请求访问地址为/adduser的时候服务器执行这个回调函数
app.get('/removeuser', function (req, res) {
  const remove = require('./adduser').remove
  remove(req.query.username, (data) => {
    res.send(data)
  })
})

// 更改用户数据接口
app.post('/updateuser', function (req, res) {
  const updateuser = require('./adduser').updateuser
  //需要判断用户是更改什么数据
  updateuser(req.body.id, req.body.username, req.body.age, req.body.telnumber, req.body.userid, req.body.contents, (datainfo) => {

    res.send('更新数据成功')
  })

})




// 当浏览器访问3030端口的地址，服务器可以监听到并且在控制台打印这条消息
app.listen(3030, function () {
  console.log('app is running at port 3030')
})